package leetcode.ArrayAndString;

import java.util.Arrays;

public class PlusOne {

    /**
     * 给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
     * 最高位数字存放在数组的首位， 数组中每个元素只存储一个数字。
     * 你可以假设除了整数 0 之外，这个整数不会以零开头。
     *
     * @param digits 非空数组
     * @return
     */
    public static int[] plusOne(int[] digits) {
        if (digits == null) {
            return null;
        }
        if (digits[0] == 0) {
            digits[0]++;
            return digits;
        }
        digits[digits.length-1]++;
        for (int i = digits.length-1; i >=0 ; i--) {
            if(i==0&&digits[0]==10){
                digits[0]=0;
                digits = insertElement(digits,1,0);
            }
            if(digits[i]==10){
                digits[i] = 0;
                digits[i-1]++;
            }
        }
        return digits;
    }

    public static void main(String args[]) {
        int[] nums = addList();
        System.out.println(Arrays.toString(plusOne(nums)));

    }

    private static int[] addList() {
        int[] bb = {9,9};
        return bb;
    }
    private static int[] insertElement(int original[],
                                       int element, int index) {
        int length = original.length;
        int destination[] = new int[length + 1];
        System.arraycopy(original, 0, destination, 0, index);
        destination[index] = element;
        System.arraycopy(original, index, destination, index
                + 1, length - index);
        return destination;
    }
}
